// // 实现一个call
// Function.prototype.Mycall = function (ctx) {
//   // ctx就是传入的对象
//   console.log('this', this);//[Function:say]

//   if (typeof this !== 'function') {
//     console.log('Type error');
//   }
//   let args = [...arguments].slice(1)//除了第一个，最后的传参
//   let result = null
//   ctx.fn = this//把函数赋值给对象
//   result = ctx.fn(...args)
//   delete ctx.fn
//   return result
// }

// const Fn = {
//   name: 'lily',
//   say: function () {
//     console.log('this.name', this.name);
//   },
// }

// Fn.say.call({ name: 'chen' })
// Fn.say.Mycall({ name: 'chen' }, 12)
// Fn.say()


Function.prototype.myCall = function (ctx) {
  //this 调用的函数
  if (typeof this !== 'function') {
    console.log('type error!!');
  }//this应该是一个函数
  const uniqueProp = Symbol();
  ctx[uniqueProp] = this
  const t = [...arguments].slice(1)
  let result = ctx[uniqueProp](...t)
  delete ctx[uniqueProp]
  return result
}

function fn (a, b) {
  console.log(a);
  console.log(b);
  console.log('this', this);
}
fn.myCall({ name: 'lily' }, 12, 10)





